
export function formatYearMonth(dateTimeString) {
    // 解析日期时间字符串为 Date 对象
    const date = new Date(dateTimeString);
 
    // 提取年份和月份（月份从0开始，所以需要加1）
    const year = date.getFullYear();
    const month = (date.getMonth() + 1).toString().padStart(2, '0'); // 确保月份是两位数
 
    // 拼接成所需的格式
    return `${year}-${month}`;
}
export function formatDate(date, falg, offsetDays = 0) {
    // 创建一个新的Date对象，根据offsetDays参数偏移日期
    const newDate = new Date(date.getTime() + offsetDays * 24 * 60 * 60 * 1000);

    const year = newDate.getFullYear();
    const month = String(newDate.getMonth() + 1).padStart(2, '0');
    const day = String(newDate.getDate()).padStart(2, '0');
    const hours = String(newDate.getHours()).padStart(2, '0');
    const minutes = String(newDate.getMinutes()).padStart(2, '0');
    const seconds = String(newDate.getSeconds()).padStart(2, '0');

    if (falg) {
        return `${year}-${month}-${day}`;
    } else {
        return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
    }
}
export function getFormattedMonth(dateString) {
    const date = dateString ? new Date(dateString) : new Date();

    // 确保日期是有效的
    if (isNaN(date.getTime())) {
        throw new Error('Invalid date string');
    }

    // 获取年份和月份
    const year = date.getFullYear();
    const month = date.getMonth() + 1; // 月份是从0开始的，所以需要加1

    // 格式化并返回结果字符串
    return `${year}年${month}月`;
}
export function getRecentTimeRange(unit, falg) {
    const now = new Date();
    let startDate, endDate;

    switch (unit) {
        case 'day':
            startDate = new Date(now);
            startDate.setDate(now.getDate() - 1);
            endDate = now;
            break;
        case 'week':
            startDate = new Date(now);
            startDate.setDate(now.getDate() - 7);
            endDate = now;
            break;
        case 'month':
            startDate = new Date(now);
            startDate.setMonth(now.getMonth() - 1);
            endDate = now;
            break;
        case 'year':
            startDate = new Date(now);
            startDate.setFullYear(now.getFullYear() - 1);
            endDate = now;
            break;
        default:
            throw new Error('Invalid unit. Please use "week", "month", or "year".');
    }

    return [formatDate(startDate, falg), formatDate(endDate, falg)];
}
//某年x周  在周的时间范围
export function getWeekRange(dateString) {
    const date = dateString ? new Date(dateString) : new Date();

    // 确保日期是有效的
    if (isNaN(date.getTime())) {
        throw new Error('Invalid date string');
    }
    // 获取该日期是周几（0-6，0代表周日）
    const dayOfWeek = date.getDay();
    // 计算该周的第一天（周日）
    const startOfWeek = new Date(date);
    startOfWeek.setDate(date.getDate() - dayOfWeek);

    // 计算该周的最后一天（周六）
    const endOfWeek = new Date(startOfWeek);
    endOfWeek.setDate(startOfWeek.getDate() + 6);

    // 格式化日期为 yyyy-MM-dd
    const formatDate = (d) => {
        const year = d.getFullYear();
        const month = String(d.getMonth() + 1).padStart(2, '0');
        const day = String(d.getDate()).padStart(2, '0');
        return `${year}-${month}-${day}`;
    };
    // 返回结果数组
    return [formatDate(startOfWeek), formatDate(endOfWeek)];
}
//某月x日  在某月的范围
export function getMonthRange(dateString) {
    const date = dateString ? new Date(dateString) : new Date();

    // 确保日期是有效的
    if (isNaN(date.getTime())) {
        throw new Error('Invalid date string');
    }

    // 获取该日期的年份和月份
    const year = date.getFullYear();
    const month = date.getMonth();

    // 计算该月的第一天
    const startOfMonth = new Date(year, month, 1);

    // 计算该月的最后一天
    // 下个月的第一天减一即为这个月的最后一天
    const endOfMonth = new Date(year, month + 1, 0);

    // 格式化日期为 yyyy-MM-dd
    const formatDate = (d) => {
        const year = d.getFullYear();
        const month = String(d.getMonth() + 1).padStart(2, '0');
        const day = String(d.getDate()).padStart(2, '0');
        return `${year}-${month}-${day}`;
    };

    // 返回结果数组
    return [formatDate(startOfMonth), formatDate(endOfMonth)];
}
//某年的时间范围
export function getYearRange(dateString) {
    const date = dateString ? new Date(dateString) : new Date();

    // 确保日期是有效的
    if (isNaN(date.getTime())) {
        throw new Error('Invalid date string');
    }

    // 获取该日期的年份
    const year = date.getFullYear();

    // 计算该年的第一天
    const startOfYear = new Date(year, 0, 1);

    // 计算该年的最后一天
    const endOfYear = new Date(year, 11, 31);

    // 格式化日期为 yyyy-MM-dd
    const formatDate = (d) => {
        const year = d.getFullYear();
        const month = String(d.getMonth() + 1).padStart(2, '0');
        const day = String(d.getDate()).padStart(2, '0');
        return `${year}-${month}-${day}`;
    };

    // 返回结果数组
    return [formatDate(startOfYear), formatDate(endOfYear)];
}
//判断是否超出当前
export function displayDate(givenDateString) {
    const givenDate = new Date(givenDateString);
    const currentDate = new Date();

    // 确保给定的日期是有效的
    if (isNaN(givenDate.getTime())) {
        throw new Error('Invalid date string');
    }

    // 格式化日期为 yyyy-MM-dd
    const formatDate = (d) => {
        const year = d.getFullYear();
        const month = String(d.getMonth() + 1).padStart(2, '0');
        const day = String(d.getDate()).padStart(2, '0');
        return `${year}-${month}-${day}`;
    };

    // 比较日期
    if (givenDate > currentDate) {
        // 如果给定的日期大于当前日期，显示当前日期
        return formatDate(currentDate);
    } else {
        // 否则，显示给定的日期
        return formatDate(givenDate);
    }
}